package com.example.springboot.mapper;

import com.example.springboot.entity.Story;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * Story表数据访问接口
 * 提供对story表的增删改查操作
 */
@Mapper
public interface StoryMapper {

    /**
     * 根据故事ID查询故事
     * 
     * @param storyId 故事ID
     * @return 故事对象
     */
    Story findById(@Param("storyId") String storyId);

    /**
     * 根据用户ID查询该用户的所有故事
     * 
     * @param userId 用户ID
     * @return 故事列表
     */
    List<Story> findByUserId(@Param("userId") Integer userId);

    /**
     * 插入新故事
     * 
     * @param story 故事对象
     * @return 影响的行数
     */
    int insert(Story story);

    /**
     * 更新故事信息
     * 
     * @param story 故事对象
     * @return 影响的行数
     */
    int update(Story story);

    /**
     * 根据故事ID删除故事
     * 
     * @param storyId 故事ID
     * @return 影响的行数
     */
    int deleteById(@Param("storyId") String storyId);

    /**
     * 查询所有可分享的故事
     * 
     * @return 可分享的故事列表
     */
    List<Story> findAllSharable();

    /**
     * 根据故事分类查询故事
     * 
     * @param classification 故事分类
     * @return 故事列表
     */
    List<Story> findByClassification(@Param("classification") Integer classification);

    /**
     * 根据故事标签模糊查询故事
     * 
     * @param tag 故事标签
     * @return 故事列表
     */
    List<Story> findByTag(@Param("tag") String tag);
}